package com.yupi.yuoj.model.vo;

import com.google.gson.Gson;
import com.yupi.yuoj.model.entity.Contest;
import lombok.Data;
import org.springframework.beans.BeanUtils;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 竞赛视图
 */
@Data
public class ContestVO implements Serializable {

    private final static Gson GSON = new Gson();

    /**
     * id
     */
    private Long id;

    /**
     * 竞赛标题
     */
    private String title;

    /**
     * 竞赛描述
     */
    private String description;

    /**
     * 竞赛类型（0 - 公开, 1 - 密码保护, 2 - 私有）
     */
    private Integer contestType;

    /**
     * 开始时间
     */
    private Date startTime;

    /**
     * 竞赛时长（分钟）
     */
    private Integer duration;

    /**
     * 竞赛状态（0 - 未开始, 1 - 进行中, 2 - 已结束）
     */
    private Integer status;

    /**
     * 是否可见排名（0 - 不可见, 1 - 可见）
     */
    private Integer visibleRank;

    /**
     * 罚时（分钟）
     */
    private Integer penalty;

    /**
     * 创建者用户 id
     */
    private Long userId;

    /**
     * 创建者信息
     */
    private UserVO userVO;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 参赛人数
     */
    private Integer registrationCount;

    /**
     * 题目数量
     */
    private Integer questionCount;

    /**
     * 是否已注册
     */
    private Boolean hasRegistered;

    /**
     * 包含的题目列表
     */
    private List<QuestionVO> questionList;

    private static final long serialVersionUID = 1L;

    /**
     * 对象转包装类
     *
     * @param contest
     * @return
     */
    public static ContestVO objToVo(Contest contest) {
        if (contest == null) {
            return null;
        }
        ContestVO contestVO = new ContestVO();
        BeanUtils.copyProperties(contest, contestVO);
        return contestVO;
    }
} 